# -*- coding: utf-8 -*-
"""
File Name: 循环与range配合实现求和.py

@author: lengf
@date: 2025-04-14
@email: lengfo@163.com
@version: 1.0.0
"""



sum = 0
for x in range(1, 101):     # 1~100
    if x % 2 == 0:
        sum += x
print(sum)


# for 语句的语法格式如下：
# for 变量 in range(起始值, 终止值, 步长):
#     语句块
# 其中，range()函数用于生成一个整数序列，起始值是序列的第一个值，终止值是序列的最后一个值，步长是序列的间隔。
# 循环体中，变量每次循环都会从序列中取出一个值，并将其赋值给变量。直到序列中的所有值都被循环过一次。

# in 后的可以是任何可迭代对象，如列表、元组、字符串等。
# for 语句是每次从可迭代对象中取出一个元素，并将其赋值给变量，直到可迭代对象中的所有元素都被循环过一次。

# 计算列表中所有元素的和
list1 = [1, 2, 3, 4, 5]
sum1 = 0
for x in list1:
    sum1 += x
print(sum1)



"""
range()语法格式如下：
range(start, stop, step)

start: 起始值，默认为0
stop: 终止值，不包含在序列中
step: 步长，默认为1

range(1, 101)生成的序列是1~100，步长为1。
range(2, 101, 2)生成的序列是2~100，步长为2。

"""

sum = 0
for x in range(2, 101, 2):
    sum += x
print(sum)


# 输入非负整数n计算其阶乘N!
# 阶乘计算可以直接用下面语句，而也可以用递归函数实现：还可以用math模块中的factorial()函数。

n = int(input('n = '))
result = 1
for x in range(1, n + 1):   
    result *= x
print('%d! = %d' % (n, result))


# 递归函数实现阶乘。应该使用上面提到的range()函数来生成序列，然后用for循环来计算阶乘。
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

n = int(input('n = '))
result = factorial(n)
print('%d! = %d' % (n, result))

# 下面是用math 模块中的factorial()函数实现阶乘的例子：
import math

n = int(input('n = '))
result = math.factorial(n)
print('%d! = %d' % (n, result))

'''

阶乘计算方法的选择：
优先选择 for 循环：效率高、无栈溢出风险，适合实际应用。

递归仅用于学习：适合理解递归思想，但需注意深度限制。

生产环境用 math.factorial：内置函数经过优化，可靠且高效。

'''